﻿/**********************************************************************
 * @file   OperGeometryFeatureCreation.h
 * @brief  特征创建组 操作器
 * @author yangjing (1195810980@qq.com)
 * @date   2025-03-3
 *********************************************************************/

#ifndef __OPERATORS_GEOMETRY_FEATURE_CREATION__
#define __OPERATORS_GEOMETRY_FEATURE_CREATION__

#include "FITK_Kernel/FITKCore/FITKActionOperator.h"
#include "FITK_Kernel/FITKCore/FITKOperatorRepo.h"

namespace ModelOper
{
    class OperGeometryFeatureCreation :public Core::FITKActionOperator
    {
        Q_OBJECT;
    public:
        /**
         * @brief  建模特征创建操作器
         * @author yangjing (1195810980@qq.com)
         * @date   2025-3-3
        */
        explicit OperGeometryFeatureCreation() = default;
        virtual ~OperGeometryFeatureCreation() = default;

        /**
         * @brief 执行界面操作
         * @return true     执行成功
         * @return false     执行失败
         * @author yangjing (1195810980@qq.com)
         * @date 2025-02-10
         */
        virtual bool execGUI() override;
        /**
         * @brief 执行读入操作
         * @return true     执行成功
         * @return false     执行失败
         * @author yangjing (1195810980@qq.com)
         * @date 2025-02-10
         */
        virtual bool execProfession() override;

    private:

        /**
         * @brief 特征创建块下Strecth 拉伸按钮
         * @author yangjing (1195810980@qq.com)
         * @date 2025-03-03
         */
        bool createStretchOper();

        /**
         * @brief 特征创建块下旋转按钮
         * @author yangjing (1195810980@qq.com)
         * @date 2025-03-04
         */
        bool createRotateOper();

        /**
         * @brief 特征创建块下扫掠按钮
         * @author yangjing (1195810980@qq.com)
         * @date 2025-03-05
         */
        bool createSweepOper();


        /**
         * @brief 特征创建块下放样按钮
         * @author yangjing (1195810980@qq.com)
         * @date 2025-03-05
         */
        bool createLoftingOper();
    };

    // 按钮注册相关操作
    Register2FITKOperatorRepo(actionStretch, OperGeometryFeatureCreation);
    Register2FITKOperatorRepo(actionRotate, OperGeometryFeatureCreation);
    Register2FITKOperatorRepo(actionSweep, OperGeometryFeatureCreation);
    Register2FITKOperatorRepo(actionLofting, OperGeometryFeatureCreation);
}
#endif